/*接口通常用于定义类必须实现的方法*/
package com.bookmanagement.mapper;

import com.bookmanagement.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户数据访问接口
 */
@Mapper
public interface UserMapper {
    void insertUser(User user); // 将一个新的用户插入到数据库中。参数：  User user  ，表示要插入的用户对象。
    User findByUsername(String username);
    // 根据用户名查找用户.参数：  String username  ，表示要查找的用户名。返回：找到的用户对象，如果没有找到则返回null
    void updatePassword(Long id, String password); // 更新用户密码
    User findById(Long id); // 根据ID查找用户

    List<User> findUsers(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize, @Param("username") String username, @Param("name") String name
            , @Param("userType") String userType);
    /*根据多个条件分页查找用户列表。*/

    int countUsers(String username, String name, String userType);/*统计符合特定条件的用户数量。*/

    void updateUser(User user);

    // 接口方法
    void deleteUser(Long id);


    /**
     * 按用户类型统计用户数量
     * @return 用户类型统计结果，包含 name（user_type）和 value（数量）
     */
    List<Map<String, Object>> countUsersByType();/*按用户类型统计用户数量。返回：一个包含统计结果的映射列表，每个映射包含用户和类型对应的数量。*/
}